﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CapaNegocio;
using Excepciones;

using System.Globalization;
using System.Threading;

namespace CapaUsuario
{
    public partial class AltaProducto : Form
    {
        private Admin admin;

        public AltaProducto(Admin a)
        {
            admin = a;
            InitializeComponent();
            //centrado dentro del formulario principal
            this.CenterToParent();
        }

        //BOTON CANCELAR
        private void button2_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        //PARA UNA CORRECTA REPRESENTACIÓN HAY QUE CAMBIAR LA CULTURA DE LA REGION (TECLADO,LENGUAJE)
        //BOTON ACEPTAR
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                //prueba
                //Guardas el nombre de la cultura actual
                string oldCultureName = CultureInfo.CurrentCulture.Name;

                //cambias la cultura actual por una que use punto como separador de decimales.
                CultureInfo newCult = new CultureInfo("en-US");
                Thread.CurrentThread.CurrentCulture = newCult;


                string descripcion = textBox1Desc.Text;
                if (descripcion.Length == 0)
                    throw new Blanco();
                //el señor problema
                decimal precio = Convert.ToDecimal(textBox2Precio.Text.Replace(",","."));
                
                //HAY QUE BUSCAR LA FORMA DE VALIDAR YA QUE "DECIMAL" NO ADMITE <,> PARA COMPARAR.
                decimal unValor= 0;
                //SI PRECIO> UNVALOR DEVUELVE 1, SI PRECIO = UNVALOR DEVUELVE 0, SI PRECIO< UNVALOR DEVUELVE -1
                if (precio.CompareTo(unValor) < 1)
                    throw new PrecioInvalido();
  
                int stock = int.Parse(textBox3Stock.Text);
                if (stock < 1)
                    throw new StockInvalido();

                if (admin.altaProducto(descripcion, precio, stock) == false)
                    MessageBox.Show("ERROR: El producto con la descripcion: " + descripcion + ". Ya existe");
                else
                {
                    MessageBox.Show("El producto ha sido registrado con exito!");
                    this.Close();
                }

                //Despues regresas a la cultura anterior.
                Thread.CurrentThread.CurrentCulture = new CultureInfo(oldCultureName);
            }

            catch (Blanco ex)
            {
                MessageBox.Show(ex.Message);
            }
            catch (PrecioInvalido ex)
            {
                MessageBox.Show(ex.Message);
            }
            catch (StockInvalido ex)
            {
                MessageBox.Show(ex.Message);
            }
            catch (FormatException ex)
            {
                MessageBox.Show(ex.Message);
            }
            catch (OverflowException ex)
            {
                MessageBox.Show(ex.Message);
            }

        }




    }
}
